package com.hsm.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.hsm.constant.MessageConstant;
import com.hsm.dao.CheckItemDao;
import com.hsm.entity.PageResult;
import com.hsm.pojo.CheckItem;
import com.hsm.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired
    private CheckItemDao checkItemDao;

    /**
     * 新增检查项
     * @param checkItem
     * @return
     */
    @Override
    public int add(CheckItem checkItem) {
        return checkItemDao.add(checkItem);
    }

    /**
     * 分页查询检查项
     * @param currentPage
     * @param pageSize
     * @param queryString
     * @return
     */
    @Override
    public PageResult findPage(Integer currentPage, Integer pageSize, String queryString) {

        //1设置分页参数
        PageHelper.startPage(currentPage,pageSize);

        //2,需要分页查询代码 select * from table where xxxx
        Page<CheckItem> page = checkItemDao.findPage(queryString);

        //3,返回分页结果
        return new PageResult(page.getTotal(),page.getResult());
    }

    /**
     * 删除检查项
     * @param checkItemId
     * @return
     */
    @Override
    public void deleteCheckItem(Integer checkItemId) {
        //1.先根据检查项id 查询中间表 关系是否存在
        int count = checkItemDao.findCountByCheckItemId(checkItemId);
        //2如果关系存在 直接抛出异常 不能删除
        if(count > 0){
            throw new RuntimeException(MessageConstant.DELETE_CHECKITEM_CHECKGROUP_FAIL);
        }
        //3如果关系不存在 则直接可以删除
        checkItemDao.deleteById(checkItemId);
    }


    /**
     * 通过id查询检查项信息，进行回显数据
     * @param checkItemId
     * @return
     */
    @Override
    public CheckItem findById(Integer checkItemId) {
        return checkItemDao.findById(checkItemId);
    }

    /**
     * 修改检查项信息
     * @param checkItem
     * @return
     */
    @Override
    public void edit(CheckItem checkItem) {
        checkItemDao.edit(checkItem);
    }

    /**
     * 查询所有检查项信息
     */
    @Override
    public List<CheckItem> findAll() {
        return checkItemDao.findAll();
    }
}
